#include "compile_run.hpp"
#include "../comm/httplib.h"

using namespace ns_compile_and_run;
using namespace httplib;

void Usage(std::string proc)
{
    std::cout << "Usage:\n\t" << proc << " port" << std::endl;
}

// ./compile_server port
int main(int argc, char *argv[])
{
    if(argc!=2)
    {
        Usage(argv[0]);
        return 1;
    }

    Server svr;

    // 定义如何处理接收到的 POST 请求
    // 定义了一个针对/compile_and_run路径的POST请求处理器。每当有匹配这个路径的POST请求到达服务器时，就会触发这里的回调函数
    svr.Post("/compile_and_run",[](const Request &req,Response &resp){
        std::string in_json = req.body; // 获取 POST 请求体
        std::string out_json;
        if(!in_json.empty())
        {
            CompileAndRun::Start(in_json,&out_json);// 编译和运行
            resp.set_content(out_json,"application/json;charset=utf-8");// 返回一个 JSON 响应
        }
    });

    svr.listen("0.0.0.0",atoi(argv[1]));

    return 0;
}